//
//  UIButton+SYAdd.h
//  SYSDK
//
//  Created by ligq on 2020/4/13.
//  Copyright © 2020 synjones. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIButton (SYAdd)
#pragma mark -  类方法
/**
 *  快速创建一个设置好字体大小及文字颜色的按钮
 *
 *  @param title      标题
 *  @param titleColor 文字颜色
 *  @param font       字体大小
 *
 *  @return 设置好属性的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font;
/**
 *  快速创建一个设置好字体大小及文字颜色的按钮 - 带背景颜色
 *
 *  @param title            标题
 *  @param titleColor       文字颜色
 *  @param font             字体大小
 *  @param backgroundColor  背景颜色
 *
 *  @return 设置好属性的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font backgroundColor:(UIColor *)backgroundColor;

/**
 *  快速创建一个设置好字体大小及文字颜色的按钮
 *
 *  @param title            标题
 *  @param titleSel         选中标题
 *  @param titleColor       文字颜色
 *  @param font             字体大小
 *
 *  @return 设置好属性的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleSel:(NSString *)titleSel titleColor:(UIColor *)titleColor font:(UIFont *)font;
/**
 *  快速创建一个设置好字体大小及文字颜色的按钮
 *
 *  @param title            标题
 *  @param titleSel         选中标题
 *  @param titleColor       文字颜色
 *  @param titleSelColor    选中文字颜色
 *  @param font             字体大小
 *
 *  @return 设置好属性的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleSel:(NSString *)titleSel titleColor:(UIColor *)titleColor titleSelColor:(UIColor *)titleSelColor font:(UIFont *)font;
/**
 *  快速创建一个带圆角的按钮
 *
 *  @param title       标题
 *  @param titleColor  文字颜色
 *  @param font        字体大小
 *  @param radius      圆角半径
 *  @param borderWidth 边线宽度
 *  @param borderColor 边线颜色
 *
 *  @return 带圆角的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font cornerRadius:(CGFloat)radius borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor backgroundColor:(UIColor *)backgroundColor;
/**
 *  快速创建带图片和标题的按钮
 *
 *  @param title            标题
 *  @param titleSel         选中标题
 *  @param titleColor       文字颜色
 *  @param titleSelColor    选中文字颜色
 *  @param font             字体大小
 *
 *  @return 设置好属性的按钮
 */
+ (instancetype)buttonWithTitle:(NSString *)title titleSel:(NSString *)titleSel titleColor:(UIColor *)titleColor titleSelColor:(UIColor *)titleSelColor font:(UIFont *)font normalImage:(UIImage *)normalImage selectedImage:(UIImage *)selectedImage;


/**
 快速创建按钮-设置目标、方法、响应事件

 @param target 目标
 @param action 方法
 @param event 事件
 @return 按钮
 */
+ (instancetype)buttonWithTarget:(id)target action:(SEL)action event:(UIControlEvents)event;

#pragma mark -  成员方法

/**
 *  快速设置标题、字体大小及文字颜色的按钮
 *
 *  @param title      标题
 *  @param titleColor 文字颜色
 *  @param font       字体大小
 */
- (void)setupButtonWithTitle:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font;
/**
 *  快速设置标题、字体大小及文字颜色的按钮-带选中效果
 *
 *  @param title      标题
 *  @param titleColor 文字颜色
 *  @param font       字体大小
 */
- (void)setupButtonWithTitle:(NSString *)title titleSel:(NSString *)titleSel titleColor:(UIColor *)titleColor titleSelColor:(UIColor *)titleSelColor font:(UIFont *)font;
/**
 *  改变按钮文字颜色及字体大小
 *
 *  @param titleColor 文字颜色
 *  @param font       字体大小
 */
- (void)changeStyleWithTitleColor:(UIColor *)titleColor font:(UIFont *)font;

/**
 改变按钮文字颜色、背景色、边框宽度、边框颜色

 @param titleColor 文字颜色
 @param backgroundColor 背景色
 @param borderWidth 边框宽度
 @param borderColor 边框色
 */
- (void)changeStyleWithTitleColor:(UIColor *)titleColor backgroundColor:(UIColor *)backgroundColor borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor;
/**
 *  改变按钮文字
 *
 *  @param title 文字
 */
- (void)changeTitle:(NSString *)title;
/**
 *  改变按钮文字及字体颜色
 *
 *  @param title 文字
 */
- (void)changeTitle:(NSString *)title titleColor:(UIColor *)titleColor;

/**
 *  改变按钮文字颜色及背景颜色
 *
 *  @param titleColor 文字颜色
 */
- (void)changeStyleWithTitleColor:(UIColor *)titleColor backgroundColor:(UIColor *)backgroundColor;
/**
 *  改变标题、文字颜色及背景色
 *
 *  @param title           标题
 *  @param titleColor      文字颜色
 *  @param backgroundColor 背景色
 */
- (void)changeStyleWithTitle:(NSString *)title titleColor:(UIColor *)titleColor backgroundColor:(UIColor *)backgroundColor;
/**
 *  改变按钮边框颜色和标题颜色
 *
 *  @param borderColor    边框颜色

 */
- (void)changeStyleWithTitleColor:(UIColor *)titleColor borderColor:(UIColor *)borderColor;
/**
 *  设置正常状态和选中状态图片
 *
 *  @param normalImage   正常状态图片
 *  @param selectedImage 选中状态图片
 *
 *  @return 设置好图片的button
 */
- (instancetype)setupButtonWithNormalImage:(UIImage *)normalImage selectedImage:(UIImage *)selectedImage;
/**
 *  设置正常状态和选中状态背景图片
 *
 *  @param normalImage   正常状态图片
 *  @param selectedImage 选中状态图片
 *
 *  @return 设置好图片的button
 */
- (instancetype)setupButtonBackgroundWithNormalImage:(UIImage *)normalImage selectedImage:(UIImage *)selectedImage;
/**
 设置图片和标题内距-带默认值
 */
- (void)setEdgeInsets;
/**
 设置图片和标题内距-设置水平间距

 @param offset 内距
 */
- (void)setEdgeInsetsHorizontal:(CGFloat)offset;

@end

NS_ASSUME_NONNULL_END
